๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ๋ณ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ React์ experimental_useMutableSource ํ ์ ์ฑ๋ฅ ์ํฅ๊ณผ ์ต์ ํ ์ ๋ต์ ํ์ํฉ๋๋ค. ๊ณ ๋น๋ ์ ๋ฐ์ดํธ๋ฅผ ์ํ ์ด์ , ์ฌ์ฉ ์ฌ๋ก, ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์์๋ณด์ธ์.
React experimental_useMutableSource ์ฑ๋ฅ: ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๊ฐ๋ณ ๋ฐ์ดํฐ ์ ๊ทผ ์ต์ ํ
๋์์์ด ์งํํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฑ๋ฅ์ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
์ด ๋์ฑ ๋ณต์กํด์ง๊ณ ์ค์๊ฐ ์
๋ฐ์ดํธ๋ฅผ ์๊ตฌํจ์ ๋ฐ๋ผ, ๊ฐ๋ฐ์๋ค์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ๋ ๋๋ง์ ์ต์ ํํ ๋ฐฉ๋ฒ์ ๋์์์ด ๋ชจ์ํ๊ณ ์์ต๋๋ค. React์ ์คํ์ useMutableSource ํ
์ ํนํ ๊ณ ๋น๋ ์
๋ฐ์ดํธ์ ๊ฐ๋ณ ๋ฐ์ดํฐ ์์ค๋ฅผ ๋ค๋ฃฐ ๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ค๊ณ๋ ๊ฐ๋ ฅํ ๋๊ตฌ๋ก ๋ถ์ํ์ต๋๋ค. ์ด ํฌ์คํธ์์๋ useMutableSource์ ์ฑ๋ฅ ์ธก๋ฉด, ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ํ ์ด์ , ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ ์ฌ๋ ฅ์ ํ์ฉํ๊ธฐ ์ํ ์ค์ฉ์ ์ธ ์ ๋ต์ ๋ํด ์์ธํ ์์๋ด
๋๋ค.
๊ฐ๋ณ ๋ฐ์ดํฐ ์ต์ ํ์ ํ์์ฑ ์ดํดํ๊ธฐ
React์ ์ ํต์ ์ธ ์ํ ๊ด๋ฆฌ๋ ์ข ์ข ๋ถ๋ณ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์์กดํฉ๋๋ค. ๋ถ๋ณ์ฑ์ ์์ธก ๊ฐ๋ฅํ ์ํ ์ ํ๊ณผ ์ฌ์ด ๋๋ฒ๊น ๊ณผ ๊ฐ์ ์ด์ ์ ์ ๊ณตํ์ง๋ง, ๋น๋ฒํ๊ณ ์ธ๋ถํ๋ ์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฑ๋ฅ ์ค๋ฒํค๋๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ คํด ๋ณด์ธ์:
- ์ค์๊ฐ ๋ฐ์ดํฐ ํผ๋: ์ฃผ์ ์์ธ ํ์๊ธฐ, ์ค์๊ฐ ์ฑํ ๋ฉ์์ง, ํ์ ํธ์ง ํ๋ซํผ ๋๋ ์ผ์ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ข ์ข ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์ ๋ํ ์ง์์ ์ด๊ณ ์์ ์ ๋ฐ์ดํธ๋ฅผ ํฌํจํฉ๋๋ค.
- ์ ๋๋ฉ์ด์ ๋ฐ ๋ฌผ๋ฆฌ ์์ง: ๋ณต์กํ ์ ๋๋ฉ์ด์ ์ด๋ ๋ฌผ๋ฆฌ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๋ ค๋ฉด ๊ฐ์ฒด ์์น, ์๋ ๋ฐ ๊ธฐํ ์์ฑ์ ๋ํ ๋น๋ฒํ ์ ๋ฐ์ดํธ๊ฐ ํ์ํฉ๋๋ค.
- ๋๊ท๋ชจ ์๋ฎฌ๋ ์ด์ : ํ๋ ์๋น ์์ฒ ๋๋ ์๋ฐฑ๋ง ๊ฐ์ ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ์ ๋ฐ์ดํธํ๋ ๊ณผํ ์๋ฎฌ๋ ์ด์ ์ด๋ ๋ฐ์ดํฐ ์๊ฐํ.
์ด๋ฌํ ๊ฒฝ์ฐ, ์ฌ์ํ ๋ณ๊ฒฝ์ด ์์ ๋๋ง๋ค ์ ์ฒด ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ ๋ณต์ฌ๋ณธ์ ๋ง๋๋ ๊ฒ์ ์ฌ๊ฐํ ๋ณ๋ชฉ ํ์์ด ๋ ์ ์์ผ๋ฉฐ, ํนํ ๋ค์ํ ๋คํธ์ํฌ ํ๊ฒฝ์ ๊ฐ์ง ์ฌ๋ฌ ์ง์ญ์ ์ฌ์ฉ์๋ค์๊ฒ ๋ ๋๋ง ์๋ ์ ํ, ๋ฉ๋ชจ๋ฆฌ ์๋น ์ฆ๊ฐ, ์ฌ์ฉ์ ๊ฒฝํ ์ ํ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
`experimental_useMutableSource` ์๊ฐ
React์ ์คํ์ useMutableSource ํ
์ ๋น๋ฒํ๊ฒ ์
๋ฐ์ดํธ๋๋ ๊ฐ๋ณ ๋ฐ์ดํฐ์ ๊ด๋ จ๋ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํน๋ณํ ์ค๊ณ๋์์ต๋๋ค. ์ด ํ
์ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๊ฐ ์ธ๋ถ์ ๊ฐ๋ณ ๋ฐ์ดํฐ ์์ค๋ฅผ ๊ตฌ๋
ํ๊ณ , ๋ถ๋ณ ์ํ ๊ด๋ฆฌ์ ์ผ๋ฐ์ ์ธ ์ค๋ฒํค๋ ์์ด ์
๋ฐ์ดํธ๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค. ํต์ฌ ์์ด๋์ด๋ useMutableSource๊ฐ React์ ํต์ฌ ์ํ ์์คํ
์ธ๋ถ์์ ๊ด๋ฆฌ๋๋ ๋ฐ์ดํฐ์ ๋ ์ง์ ์ ์ด๊ณ ํจ์จ์ ์ผ๋ก ์ ๊ทผํ๊ณ ๋ฐ์ํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค๋ ๊ฒ์
๋๋ค.
์๋ ๋ฐฉ์ (๊ฐ๋ ์ ๊ฐ์)
useMutableSource๋ React ์ปดํฌ๋ํธ์ ์ธ๋ถ์ ๊ฐ๋ณ ๋ฐ์ดํฐ ์ ์ฅ์ ์ฌ์ด์ ๊ฐ๊ทน์ ๋ฉ์ฐ๋ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค. ๋ฐ์ดํฐ ์์ค์ ํ์ฌ ๊ฐ์ ์ฝ๊ธฐ ์ํ getSnapshot ํจ์์ ๋ฐ์ดํฐ ์์ค๊ฐ ๋ณ๊ฒฝ๋ ๋ ํธ์ถ๋ ์ฝ๋ฐฑ์ ๋ฑ๋กํ๊ธฐ ์ํ subscribe ํจ์์ ์์กดํฉ๋๋ค.
๋ฐ์ดํฐ ์์ค๊ฐ ์
๋ฐ์ดํธ๋๋ฉด subscribe์ ์ ๊ณต๋ ์ฝ๋ฐฑ์ด ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด React๋ ์ต์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด getSnapshot์ ๋ค์ ํธ์ถํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์๋ค๋ฉด, React๋ ํด๋น ์ปดํฌ๋ํธ์ ๋ฆฌ๋ ๋๋ง์ ์ค์ผ์ค๋งํฉ๋๋ค. ๊ฒฐ์ ์ ์ผ๋ก, useMutableSource๋ ๋์์ฑ ๋ ๋๋ง์ ์ธ์งํ๋๋ก ์ค๊ณ๋์ด ์์ด React์ ์ต์ ๋ ๋๋ง ๋ฉ์ปค๋์ฆ๊ณผ ํจ์จ์ ์ผ๋ก ํตํฉ๋ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ฃผ์ ์ด์
useMutableSource์ ์ฑ๋ฅ ์ด์ ์ ํนํ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์
์ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค:
- ์ค์๊ฐ ๋ฐ์ดํฐ์ ์ง์ฐ ์๊ฐ ๊ฐ์: ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ, ์ค์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ํ์ํ๋ ๋ฐ ์์ด ์ง์ฐ ์๊ฐ์ ์ต์ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
useMutableSource์ ํจ์จ์ ์ธ ์ ๋ฐ์ดํธ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉ์์ ์์น์ ๊ด๊ณ์์ด ๊ฐ๋ฅํ ํ ์ค์๊ฐ์ ๊ฐ๊น์ด ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค. - ๊ณ ๋น๋ ์
๋ฐ์ดํธ ์๋๋ฆฌ์ค์์ ๋ ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ: ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ ๋ค์ํ ๋คํธ์ํฌ ์๋๋ฅผ ๊ฒฝํํ ์ ์์ต๋๋ค.
useMutableSource๋ ๋น๋ฒํ ์ ๋ฐ์ดํธ์ ๊ด๋ จ๋ ๋ ๋๋ง ์ค๋ฒํค๋๋ฅผ ์ค์์ผ๋ก์จ, ์ ๋ขฐ์ฑ์ด ๋ฎ์ ์ฐ๊ฒฐ์์๋ ๋ ๋ถ๋๋ฝ๊ณ ๋ฐ์์ฑ์ด ์ข์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๊ธฐ์ฌํฉ๋๋ค. - ๋๊ท๋ชจ ๋ฐ์ดํฐ์
์ ํจ์จ์ ์ธ ์ฒ๋ฆฌ: ๋ง์ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์
์ ํฌ๊ณ ๋์ ์ธ ๋ฐ์ดํฐ์
(์: ์ค์๊ฐ ๊ตํต ์ ๋ณด๊ฐ ํฌํจ๋ ์ง๋, ๊ธ๋ก๋ฒ ๊ฒฝ์ ๋์๋ณด๋)์ ๋ค๋ฃน๋๋ค.
useMutableSource์ ๊ฐ๋ณ ๋ฐ์ดํฐ ์ ๊ทผ ์ต์ ํ ๊ธฐ๋ฅ์ ์ด๋ฌํ ๋ฐ์ดํฐ์ ์ด ์ง์์ ์ผ๋ก ๋ณ๋ํ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋๋ ค์ง๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. - ์์ ํ์ฉ๋ ํฅ์: ๋ถํ์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ณต์ฌ๋ฅผ ํผํจ์ผ๋ก์จ
useMutableSource๋ CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ฎ์ถ ์ ์์ผ๋ฉฐ, ์ด๋ ๋ค์ํ ์ฅ์น ๋ฐ ๋คํธ์ํฌ ํ๊ฒฝ์ ์ฌ์ฉ์์๊ฒ ์ ๋ฆฌํฉ๋๋ค.
์ฑ๋ฅ ๊ณ ๋ ค์ฌํญ ๋ฐ ์ต์ ํ ์ ๋ต
useMutableSource๊ฐ ์๋นํ ์ฑ๋ฅ ํฅ์์ ์ ๊ณตํ์ง๋ง, ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ค๋ฉด ์ฑ๋ฅ ์ต์ ํ์ ๋ํ ์ ์คํ ์ ๊ทผ์ด ํ์ํฉ๋๋ค.
1. ํจ์จ์ ์ธ `getSnapshot` ๊ตฌํ
getSnapshot ํจ์๋ ๊ฐ๋ณ ๋ฐ์ดํฐ ์์ค์ ํ์ฌ ์ํ๋ฅผ ์ฝ๋ ์ญํ ์ ํฉ๋๋ค. ์ด ํจ์์ ์ฑ๋ฅ์ ๋ฆฌ๋ ๋๋ง ์ฃผ๊ธฐ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
- ๊ณ์ฐ ์ต์ํ:
getSnapshot์ด ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋๋ก ํ์ญ์์ค. ์ด ํจ์ ๋ด์์ ๋ณต์กํ ๊ณ์ฐ์ด๋ ๋ฐ์ดํฐ ๋ณํ์ ์ํํ์ง ๋ง์ธ์. ๋ณํ์ด ํ์ํ ๊ฒฝ์ฐ, ๋ ๋๋ง์ ์ํด ๋ฐ์ดํฐ๋ฅผ *์ฝ์* ๋๊ฐ ์๋๋ผ ์์ค์ ๋ฐ์ดํฐ๋ฅผ *์ธ* ๋ ์ํํ๋ ๊ฒ์ด ์ด์์ ์ ๋๋ค. - ๋ณ๊ฒฝ๋์ง ์์์ ๋ ๋์ผํ ์ฐธ์กฐ ๋ฐํ: ๋ง์ง๋ง ํธ์ถ ์ดํ ๋ฐ์ดํฐ๊ฐ ์ค์ ๋ก ๋ณ๊ฒฝ๋์ง ์์๋ค๋ฉด, ์ ํํ ๋์ผํ ์ฐธ์กฐ๋ฅผ ๋ฐํํ์ธ์. React๋ ์ฐธ์กฐ ๋๋ฑ์ฑ์ ์ฌ์ฉํ์ฌ ๋ฆฌ๋ ๋๋ง์ด ํ์ํ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ๋ง์ฝ
getSnapshot์ด ๊ธฐ๋ณธ ๋ฐ์ดํฐ๊ฐ ๋์ผํจ์๋ ๋ถ๊ตฌํ๊ณ ์ง์์ ์ผ๋ก ์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ฉด ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ์ ๋ฐํ ์ ์์ต๋๋ค. - ๋ฐ์ดํฐ ์ธ๋ถํ ๊ณ ๋ ค: ๊ฐ๋ณ ์์ค๊ฐ ํฐ ๊ฐ์ฒด๋ฅผ ํฌํจํ๊ณ ์ปดํฌ๋ํธ๊ฐ ๊ทธ์ค ์์ ๋ถ๋ถ๋ง ํ์๋ก ํ๋ ๊ฒฝ์ฐ,
getSnapshot์ด ๊ด๋ จ ํ์ ์งํฉ๋ง ๋ฐํํ๋๋ก ์ต์ ํํ์ธ์. ์ด๋ ๋ฆฌ๋ ๋๋ง ์ค์ ์ฒ๋ฆฌ๋๋ ๋ฐ์ดํฐ์ ์์ ๋์ฑ ์ค์ผ ์ ์์ต๋๋ค.
2. `subscribe` ๋ฉ์ปค๋์ฆ ์ต์ ํ
subscribe ํจ์๋ React๊ฐ ์ธ์ getSnapshot์ ์ฌํ๊ฐํด์ผ ํ๋์ง ์ ์ ์๋๋ก ํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ๋นํจ์จ์ ์ธ ๊ตฌ๋
๋ชจ๋ธ์ ์
๋ฐ์ดํธ ๋๋ฝ์ด๋ ๊ณผ๋ํ ํด๋ง์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- ์ ํํ ๊ตฌ๋
:
subscribeํจ์๋ ์ปดํฌ๋ํธ์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๊ฐ ์ค์ ๋ก ๋ณ๊ฒฝ๋์์ *๋๋ง* ํธ์ถ๋๋ ์ฝ๋ฐฑ์ ๋ฑ๋กํด์ผ ํฉ๋๋ค. ๊ด๋ จ ์๋ ๋ฐ์ดํฐ์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ๊ด๋ฒ์ํ ๊ตฌ๋ ์ ํผํ์ธ์. - ํจ์จ์ ์ธ ์ฝ๋ฐฑ ํธ์ถ:
subscribe์ ๋ฑ๋ก๋ ์ฝ๋ฐฑ์ด ๊ฐ๋ณ๋๋ก ๋ณด์ฅํ์ธ์. ์ฝ๋ฐฑ์ ๋ฌด๊ฑฐ์ด ๋ก์ง์ ์ํํ๊ธฐ๋ณด๋ค๋ ์ฃผ๋ก React์ ์ฌํ๊ฐ๋ฅผ ์ ํธํ๋ ์ญํ ์ ํด์ผ ํฉ๋๋ค. - ์ ๋ฆฌ(Cleanup)๊ฐ ํต์ฌ: ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ํด์ ๋ ๋ ์ ์ ํ๊ฒ ๊ตฌ๋
์ ํด์งํ์ธ์. ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์งํ๊ณ React๊ฐ ๋ ์ด์ DOM์ ์๋ ์ปดํฌ๋ํธ๋ฅผ ์
๋ฐ์ดํธํ๋ ค๊ณ ์๋ํ์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
subscribeํจ์๋ ์ ๋ฆฌ ํจ์๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค.
3. ๋์์ฑ ๋ ๋๋ง ํตํฉ ์ดํด
useMutableSource๋ React์ ๋์์ฑ ๊ธฐ๋ฅ(concurrent features)์ ์ผ๋์ ๋๊ณ ๋ง๋ค์ด์ก์ต๋๋ค. ์ด๋ ๋์์ฑ ๋ ๋๋ง ๋ฐ ํธ๋์ง์
๊ณผ ๊ฐ์ ๊ธฐ๋ฅ๊ณผ ์ํํ๊ฒ ํตํฉ๋ ์ ์์์ ์๋ฏธํฉ๋๋ค.
- ๋
ผ๋ธ๋กํน(Non-Blocking) ์
๋ฐ์ดํธ: ๋์์ฑ ๋ ๋๋ง์ ํตํด React๋ ๋ ๋๋ง์ ์ค๋จํ๊ณ ์ฌ๊ฐํ ์ ์์ต๋๋ค.
useMutableSource๋ ์ด์ ํจ๊ป ์๋ํ๋๋ก ์ค๊ณ๋์ด ๊ณ ๋น๋ ์ ๋ฐ์ดํธ๊ฐ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ์ง ์๊ณ ๋ ๋ฐ์์ฑ์ด ์ข์ UI๋ฅผ ์ ๊ณตํฉ๋๋ค. - ํธ๋์ง์
(Transitions): ๊ธด๊ธํ์ง ์์ ์
๋ฐ์ดํธ์ ๊ฒฝ์ฐ, React์
useTransitionํ ์useMutableSource์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์. ์ด๋ฅผ ํตํด ๋ ์ค์ํ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ๋ฅผ ์ง์ฐ์์ผ ์ฌ์ฉ์ ์ํธ์์ฉ์ ์ฐ์ ์ํ๊ณ ๋ถ๋๋ฌ์ด ๊ฒฝํ์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํํฐ ๋ณ๊ฒฝ์ ๋ฐ๋ผ ๋ณต์กํ ์ฐจํธ๋ฅผ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ ํธ๋์ง์ ์ผ๋ก ๊ฐ์ธ๋ฉด ์ด์ ์ ์ป์ ์ ์์ต๋๋ค.
4. ์ฌ๋ฐ๋ฅธ ์ธ๋ถ ๋ฐ์ดํฐ ์์ค ์ ํ
useMutableSource์ ํจ๊ณผ๋ ์ํธ์์ฉํ๋ ์ธ๋ถ ๋ฐ์ดํฐ ์์ค์ ํฌ๊ฒ ์์กดํฉ๋๋ค. ๋น๋ฒํ ์
๋ฐ์ดํธ์ ์ต์ ํ๋ ๋ฐ์ดํฐ ์์ค๋ฅผ ๊ณ ๋ คํ์ธ์:
- ์ฌ์ฉ์ ์ ์ ๊ฐ๋ณ ์คํ ์ด: ๋งค์ฐ ํน์ ํ ์ฑ๋ฅ ์๊ตฌ์ฌํญ์ ์ํด ์ฌ์ฉ์ ์ ์ ๊ฐ๋ณ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค. ์ด ์คํ ์ด๋ ์
๋ฐ์ดํธ์ ๋ํ ์์ฒด ๋ด๋ถ ์ต์ ํ๋ฅผ ์ฒ๋ฆฌํ๊ณ ํ์ํ
getSnapshot๋ฐsubscribe์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. - ๊ฐ๋ณ ์ํ๋ฅผ ๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ: ์ผ๋ถ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฐ์ดํฐ ํ์นญ ์๋ฃจ์
์
useMutableSource์์ ํตํฉ์ ์ ํฉํ ๊ฐ๋ณ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ API๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
5. ํ๋กํ์ผ๋ง ๋ฐ ๋ฒค์น๋งํน
๋ค๋ฅธ ์ฑ๋ฅ ์ต์ ํ์ ๋ง์ฐฌ๊ฐ์ง๋ก, ์๊ฒฉํ ํ๋กํ์ผ๋ง๊ณผ ๋ฒค์น๋งํน์ ํ์์ ์ ๋๋ค.
- React DevTools Profiler: React DevTools Profiler๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ค ์ปดํฌ๋ํธ๊ฐ ์์ฃผ ๋ ๋๋ง๋๊ณ ๊ทธ ์ด์ ๊ฐ ๋ฌด์์ธ์ง ์๋ณํ์ธ์. ํนํ
useMutableSource๋ฅผ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด์ธ์. - ๋ธ๋ผ์ฐ์ ์ฑ๋ฅ ๋๊ตฌ: ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ(์: Chrome DevTools ์ฑ๋ฅ ํญ)๋ฅผ ํ์ฉํ์ฌ CPU ์ฌ์ฉ๋, ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ถ์ํ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ๋ณ๋ชฉ ํ์์ ์๋ณํ์ธ์.
- ๋คํธ์ํฌ ํ๊ฒฝ ์๋ฎฌ๋ ์ด์
: ๋ค์ํ ๋คํธ์ํฌ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์
์ ํ
์คํธํ์ฌ ์ ์ธ๊ณ์ ์ผ๋ก ์ธํฐ๋ท ์๋๊ฐ ๋ค๋ฅธ ์ฌ์ฉ์๋ฅผ ์ํด
useMutableSource๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํดํ์ธ์.
๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์์์ ์ฌ์ฉ ์ฌ๋ก
useMutableSource๊ฐ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์
์ ์ด๋ป๊ฒ ํฐ ์ด์ ์ ์ค ์ ์๋์ง ๋ช ๊ฐ์ง ์ค์ฉ์ ์ธ ์๋๋ฆฌ์ค๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
1. ์ค์๊ฐ ๊ธ๋ก๋ฒ ๋์๋ณด๋
๋ค์ํ ์ง์ญ์ ์ค์๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ ๋์๋ณด๋๋ฅผ ์์ํด ๋ณด์ธ์: ์ฃผ๊ฐ, ๋ด์ค ํผ๋, ์์ ๋ฏธ๋์ด ํธ๋ ๋, ๋๋ ๊ธ๋ก๋ฒ ๋น์ฆ๋์ค์ ์ด์ ์งํ. ์ด ๋ฐ์ดํฐ๋ ๋ช ์ด๋ง๋ค ๋๋ ๊ทธ๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ์ ๋ฐ์ดํธ๋ ์ ์์ต๋๋ค.
- ๊ณผ์ : ๋ง์ ์ปดํฌ๋ํธ์ ๊ฑธ์ณ ์ฌ๋ฌ ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ฉด UI๊ฐ ๋๋ ค์ง ์ ์์ผ๋ฉฐ, ํนํ ๊ฐ ์ ๋ฐ์ดํธ๊ฐ ๋ถ๋ณ ์ํ๋ก ์ ์ฒด ๋ฆฌ๋ ๋๋ง ์ฃผ๊ธฐ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ๊ฒฝ์ฐ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
useMutableSource๋ฅผ ์ฌ์ฉํ ํด๊ฒฐ์ฑ : ๊ฐ๋ณ ๋ฐ์ดํฐ ์์ค(์: WebSocket ๊ธฐ๋ฐ ๋ฐ์ดํฐ ์คํ ์ด)๊ฐ ์ค์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ ํ ์ ์์ต๋๋ค. ์ปดํฌ๋ํธ๋ค์useMutableSource๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๋ฐ์ดํฐ์ ํน์ ๋ถ๋ถ์ ๊ตฌ๋ ํ ์ ์์ต๋๋ค. ์ฃผ๊ฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํด๋น ๊ฐ๊ฒฉ์ ํ์ํ๋ ์ปดํฌ๋ํธ๋ง ์ ๋ฐ์ดํธํ๋ฉด ๋๋ฉฐ, ์ ๋ฐ์ดํธ ์์ฒด๋ ๋งค์ฐ ํจ์จ์ ์ ๋๋ค.- ๊ธ๋ก๋ฒ ์ํฅ: ๋์ฟ, ๋ฐ๋, ๋ด์์ ์ฌ์ฉ์ ๋ชจ๋๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฉ์ถ์ง ์๊ณ ์๊ธฐ์ ์ ํ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ๊ฒ ๋์ด ์๊ฐ๋์ ๋คํธ์ํฌ ํ๊ฒฝ์ ๊ด๊ณ์์ด ์ผ๊ด๋ ๊ฒฝํ์ ๋ณด์ฅํฉ๋๋ค.
2. ํ์ ํ์ดํธ๋ณด๋ ๋ฐ ๋์์ธ ๋๊ตฌ
์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๊ณต์ ์บ๋ฒ์ค์์ ์ค์๊ฐ์ผ๋ก ํ์ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ , ์๋ฅผ ๋ค์ด ํ์ ํ์ดํธ๋ณด๋๋ ๋์์ธ ๋๊ตฌ์ ๋๋ค.
- ๊ณผ์ : ๋ชจ๋ ์ฌ์ฉ์์ ํ ์คํธ๋กํฌ, ๋ํ ์์ , ๋๋ ํ ์คํธ ํธ์ง์ด ๋ค๋ฅธ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ฆ์ ๋ฐ์๋์ด์ผ ํฉ๋๋ค. ์ด๋ ๋ง์ ์์ ์์ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ๋ฅผ ํฌํจํฉ๋๋ค.
useMutableSource๋ฅผ ์ฌ์ฉํ ํด๊ฒฐ์ฑ : ์บ๋ฒ์ค ์ํ(์: ๋ํ ๋ฐฐ์ด, ์์ฑ)๋ ๊ฐ๋ณ์ ์ด๊ณ ํ์ ๊ฐ๋ฅํ ๋ฐ์ดํฐ ์คํ ์ด์์ ๊ด๋ฆฌ๋ ์ ์์ต๋๋ค. ๊ฐ ์ฐ๊ฒฐ๋ ํด๋ผ์ด์ธํธ์ UI ์ปดํฌ๋ํธ๋useMutableSource๋ฅผ ์ฌ์ฉํ์ฌ ์บ๋ฒ์ค ์ํ๋ฅผ ๊ตฌ๋ ํ ์ ์์ต๋๋ค. ํ ์ฌ์ฉ์๊ฐ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ด ์คํ ์ด์ ํธ์๋๊ณ ,useMutableSource๋ ์ ์ฒด ์บ๋ฒ์ค๋ ๊ฐ๋ณ ์ปดํฌ๋ํธ๋ฅผ ๋ถํ์ํ๊ฒ ๋ฆฌ๋ ๋๋งํ์ง ์๊ณ ๋ชจ๋ ๋ค๋ฅธ ์ฐ๊ฒฐ๋ ์ฌ์ฉ์์ ๋ทฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.- ๊ธ๋ก๋ฒ ์ํฅ: ์ ์ธ๊ณ์ ํฉ์ด์ ธ ์๋ ํ์ด ์ํํ๊ฒ ํ์ ํ ์ ์์ผ๋ฉฐ, ๊ทธ๋ฆฌ๊ธฐ ๋์์ด ๋ชจ๋ ์ฌ๋์๊ฒ ๊ฑฐ์ ์ฆ๊ฐ์ ์ผ๋ก ๋ํ๋ ์ง์ ํ ์ค์๊ฐ ์ํธ์์ฉ์ ์ด์งํฉ๋๋ค.
3. ์ค์๊ฐ ๋ฐ์ดํฐ ์ค๋ฒ๋ ์ด๊ฐ ์๋ ๋ํํ ์ง๋
์ค์๊ฐ ๊ตํต ์ํฉ, ํญ๊ณตํธ ์ถ์ ๊ธฐ, ๋๋ ๊ธฐ์ ํจํด์ ๋ณด์ฌ์ฃผ๋ ๊ธ๋ก๋ฒ ์ง๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ฐํด ๋ณด์ธ์.
- ๊ณผ์ : ์ง๋๋ ์๋ฐฑ ๋๋ ์์ฒ ๊ฐ์ ์ํฐํฐ(์๋์ฐจ, ๋นํ๊ธฐ, ๋ ์จ ์์ด์ฝ)์ ์์น๋ ์ํ๋ฅผ ๋์์ ์ ๋ฐ์ดํธํด์ผ ํ ์ ์์ต๋๋ค.
useMutableSource๋ฅผ ์ฌ์ฉํ ํด๊ฒฐ์ฑ : ์ด๋ฌํ ์ํฐํฐ์ ์์น ๋ฐ ์ํ ๋ฐ์ดํฐ๋ ๋น๋ฒํ ์ฐ๊ธฐ์ ์ต์ ํ๋ ๊ฐ๋ณ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋ณด๊ด๋ ์ ์์ต๋๋ค. ์ง๋ ๋ง์ปค๋ฅผ ๋ ๋๋งํ๋ ์ปดํฌ๋ํธ๋useMutableSource๋ฅผ ํตํด ๊ด๋ จ ๋ฐ์ดํฐ ํฌ์ธํธ์ ๊ตฌ๋ ํ ์ ์์ต๋๋ค. ๋นํ๊ธฐ์ ์์น๊ฐ ๋ณ๊ฒฝ๋๋ฉดgetSnapshotํจ์๊ฐ ์ด ๋ณ๊ฒฝ์ ๊ฐ์งํ๊ณ ํน์ ๋ง์ปค ์ปดํฌ๋ํธ๊ฐ ํจ์จ์ ์ผ๋ก ๋ฆฌ๋ ๋๋ง๋ฉ๋๋ค.- ๊ธ๋ก๋ฒ ์ํฅ: ์ด๋์๋ ์ฌ์ฉ์๋ ์ถ์ ๋๋ ์ํฐํฐ ์์ ๊ด๊ณ์์ด ์ค์๊ฐ ์ ๋ฐ์ดํธ๊ฐ ์ํํ๊ฒ ํ๋ฅด๋ ๋์ ์ด๊ณ ๋ฐ์์ฑ์ด ์ข์ ์ง๋๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
4. ๊ฒ์ ๋ฐ ์ค์๊ฐ ์๋ฎฌ๋ ์ด์
์น ๋ธ๋ผ์ฐ์ ์์ ๋ ๋๋ง๋๋ ์จ๋ผ์ธ ๊ฒ์์ด๋ ๊ณผํ ์๋ฎฌ๋ ์ด์ ์ ๊ฒฝ์ฐ, ๊ฒ์ ์ํ๋ ์๋ฎฌ๋ ์ด์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ๊ณผ์ : ๊ฒ์ ์ํฐํฐ์ ์์น, ์ฒด๋ ฅ ๋ฐ ๊ธฐํ ์์ฑ์ ์ด๋น ์ฌ๋ฌ ๋ฒ ๋น ๋ฅด๊ฒ ๋ณ๊ฒฝ๋ฉ๋๋ค.
useMutableSource๋ฅผ ์ฌ์ฉํ ํด๊ฒฐ์ฑ : ๊ฒ์ ์ํ๋ ์๋ฎฌ๋ ์ด์ ๋ฐ์ดํฐ๋ ๊ณ ๋๋ก ์ต์ ํ๋ ๊ฐ๋ณ ์คํ ์ด์์ ๊ด๋ฆฌ๋ ์ ์์ต๋๋ค. ํ๋ ์ด์ด์ ์ฒด๋ ฅ, ์ ์ ๋๋ ๋์ ๊ฐ์ฒด์ ์์น๋ฅผ ํ์ํ๋ UI ์์๋useMutableSource๋ฅผ ํ์ฉํ์ฌ ์ด๋ฌํ ๋น ๋ฅธ ๋ณํ์ ์ต์ํ์ ์ค๋ฒํค๋๋ก ๋ฐ์ํ ์ ์์ต๋๋ค.- ๊ธ๋ก๋ฒ ์ํฅ: ์ ์ธ๊ณ ํ๋ ์ด์ด๋ค์ ๊ฒ์ ์ํ ์ ๋ฐ์ดํธ๊ฐ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ๋๊ณ ๋ ๋๋ง๋์ด ๋ ๋์ ๋ฉํฐํ๋ ์ด์ด ๊ฒฝํ์ ๊ธฐ์ฌํ๋ ์ ๋์ ์ด๊ณ ๋ฐ์์ฑ์ด ์ข์ ๊ฒ์ ์ธํฐํ์ด์ค๋ฅผ ๊ฒฝํํฉ๋๋ค.
์ ์ฌ์ ๋จ์ ๋ฐ ์ฌ๊ณ ๋ ค ์์
useMutableSource๋ ๊ฐ๋ ฅํ์ง๋ง ์คํ์ ์ธ ํ
์ด๋ฉฐ, ๋ชจ๋ ์ํ ๊ด๋ฆฌ ๋ฌธ์ ์ ๋ํ ๋ง๋ณํต์น์ฝ์ ์๋๋๋ค. ๊ทธ ํ๊ณ๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
- ๋ณต์ก์ฑ: ์ธ๋ถ ๊ฐ๋ณ ๋ฐ์ดํฐ ์์ค์ ๊ทธ
getSnapshot/subscribe์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋ ๊น๋ค๋ก์ด ์๋๋ฆฌ์ค์์useState๋ ์ปจํ ์คํธ์ ๊ฐ์ ๋ ๊ฐ๋จํ ๋ด์ฅ React ์ํ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๋ ๋ณต์กํ ์ ์์ต๋๋ค. - ๋๋ฒ๊น : ๊ฐ๋ณ ์ํ๋ฅผ ๋๋ฒ๊น ํ๋ ๊ฒ์ ๋๋๋ก ๋ถ๋ณ ์ํ๋ฅผ ๋๋ฒ๊น ํ๋ ๊ฒ๋ณด๋ค ๊น๋ค๋ก์ธ ์ ์์ต๋๋ค. ์ง์ ์ ์ธ ๋ณ๊ฒฝ์ ์ ์คํ๊ฒ ๊ด๋ฆฌํ์ง ์์ผ๋ฉด ์๊ธฐ์น ์์ ๋ถ์์ฉ์ ์ผ์ผํฌ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
- `experimental` ์ํ: ์คํ์ ์ธ ๊ธฐ๋ฅ์ผ๋ก์, ๊ทธ API๋ ํฅํ React ๋ฒ์ ์์ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ค์ ์ด๋ฅผ ์ธ์งํ๊ณ ์ ์ฌ์ ์ธ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋๋นํด์ผ ํฉ๋๋ค.
- ๋ชจ๋ ์ํ์ ์ ํฉํ์ง ์์: ๋๋ฌผ๊ฒ ๋ณ๊ฒฝ๋๊ฑฐ๋ ๊ทน๋๋ก ๋์ ๋น๋์ ์
๋ฐ์ดํธ๊ฐ ํ์ํ์ง ์์ ์ ํ๋ฆฌ์ผ์ด์
์ํ์ ๊ฒฝ์ฐ, ํ์ค React ์ํ ๊ด๋ฆฌ ํจํด(
useState,useReducer, Context API)์ด ์ข ์ข ๋ ๊ฐ๋จํ๊ณ ์ ์ ํฉ๋๋ค.useMutableSource๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด ๋ถํ์ํ ๋ณต์ก์ฑ์ ์ด๋ํ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ๋์ ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์
์์ useMutableSource์ ์ฑ๊ณต์ ์ธ ๋์
๊ณผ ์ต์ ์ ์ฑ๋ฅ์ ๋ณด์ฅํ๊ธฐ ์ํด:
- ์๊ฒ ์์ํ๊ธฐ: ์ ํ๋ฆฌ์ผ์ด์
์์ ๊ณ ๋น๋ ๊ฐ๋ณ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ํน์ ํ๊ณ ์ ์ ์๋ ์ฑ๋ฅ์ด ์ค์ํ ์์ญ์
useMutableSource๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ถํฐ ์์ํ์ธ์. - ๋ฐ์ดํฐ ์์ค ์ถ์ํ: ๊ฐ๋ณ ๋ฐ์ดํฐ ์์ค์ ๋ํ ๋ช ํํ ์ถ์ํ ๊ณ์ธต์ ๋ง๋์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ๊ตฌํ์ ๊ต์ฒดํ๊ฑฐ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ํ ์คํธํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๋๋ค.
- ํฌ๊ด์ ์ธ ํ ์คํธ: ๋ฐ์ดํฐ ์์ค์ ๊ทธ์ ์ํธ์์ฉํ๋ ์ปดํฌ๋ํธ์ ๋ํ ๋จ์ ๋ฐ ํตํฉ ํ ์คํธ๋ฅผ ๊ตฌํํ์ธ์. ์ฃ์ง ์ผ์ด์ค์ ์ ๋ฐ์ดํธ ์๋๋ฆฌ์ค ํ ์คํธ์ ์ง์คํ์ธ์.
- ํ ๊ต์ก: ๊ฐ๋ฐํ์ด ๊ฐ๋ณ ์ํ, ๋์์ฑ ๋ ๋๋ง์ ์๋ฆฌ, ๊ทธ๋ฆฌ๊ณ
useMutableSource๊ฐ React ์ํ๊ณ์ ์ด๋ป๊ฒ ๋ถํฉํ๋์ง ์ดํดํ๋๋ก ํ์ธ์. - ์ฑ๋ฅ ์ง์์ ๋ชจ๋ํฐ๋ง: ํนํ
useMutableSource๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ๋์ ํ๊ฑฐ๋ ์์ ํ ํ์๋ ์ ๊ธฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋กํ์ผ๋งํ์ธ์. ๋ค๋ฅธ ์ง์ญ์ ์ฌ์ฉ์ ํผ๋๋ฐฑ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. - ์ง์ฐ ์๊ฐ ๊ณ ๋ ค:
useMutableSource๋ ๋ ๋๋ง์ ์ต์ ํํ์ง๋ง ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ์ ๋ง๋ฒ์ฒ๋ผ ํด๊ฒฐํ์ง๋ ์์ต๋๋ค. ์ง์ ํ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํด์๋ ์ฃ์ง ์ปดํจํ , CDN, ์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ๋ฐ์ดํฐ ์ ์ฅ์์ ๊ฐ์ ๊ธฐ์ ์ ๊ณ ๋ คํ์ฌ ๋ฐ์ดํฐ ์ด๋ ์๊ฐ์ ์ต์ํํ์ธ์.
๊ฒฐ๋ก
React์ experimental_useMutableSource ํ
์ ๋ณต์กํ ๋ฐ์ดํฐ ๋ ๋๋ง ์๋๋ฆฌ์ค๋ฅผ ์ฒ๋ฆฌํ๋ React์ ๋ฅ๋ ฅ์ ์์ด ์ค์ํ ์ง์ ์ ๋ํ๋
๋๋ค. ์ค์๊ฐ ์
๋ฐ์ดํธ, ๊ณ ๋น๋ ๋ฐ์ดํฐ ์กฐ์, ๊ทธ๋ฆฌ๊ณ ๋ค์ํ ๋คํธ์ํฌ ํ๊ฒฝ์์ ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์์กดํ๋ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์
์ ์ด ํ
์ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ๊ฐ๋ ฅํ ๊ธธ์ ์ ๊ณตํฉ๋๋ค. getSnapshot๊ณผ subscribe๋ฅผ ์ ์คํ๊ฒ ๊ตฌํํ๊ณ , ๋์์ฑ ๋ ๋๋ง๊ณผ ํตํฉํ๋ฉฐ, ์ ์ ํ ์ธ๋ถ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ ํํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ค์ ์๋นํ ์ฑ๋ฅ ํฅ์์ ์ด๋ฃฐ ์ ์์ต๋๋ค.
์ด ํ ์ด ๊ณ์ ์งํํจ์ ๋ฐ๋ผ, ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ๋ฐ์์ฑ์ด ์ข์ผ๋ฉฐ ์ ์ธ๊ณ์ ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ์์ด ๊ทธ ์ญํ ์ ์์ฌํ ์ฌ์ง ์์ด ์ปค์ง ๊ฒ์ ๋๋ค. ํ์ฌ๋ก์๋ ์น ์ฑ๋ฅ์ ํ๊ณ๋ฅผ ๋ฐ์ด๋์ผ๋ ค๋ React์ ๋ ธ๋ ฅ์ ์ฆ๋ช ํ๋ ๊ฒ์ผ๋ก, ๊ฐ๋ฐ์๋ค์ด ์ ์ธ๊ณ์ ์ผ๋ก ๋ ์ญ๋์ ์ด๊ณ ๋งค๋ ฅ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ง๋ค ์ ์๋๋ก ํ์ ์ค์ด์ค๋๋ค.